Nel film Independence Day gli alieni conquistano la Terra servendosi
di enormi astronavi. La resistenza umana, organizzata attorno
ad un gruppo di superstiti è senza risorse contro la potenza
degli invasori. Ma ad un certo punto arriva la soluzione: iniettare
un virus nel computer dell'astronave madre. Gli eroi raccolgono
le armi e, dopo una epica battaglia, riescono a connettersi con
il cervello elettronico della nave ammiraglia e ad inserire il
virus all'interno del quartier generale delle forze armate extraterrestri.
Gli effetti sono disastrosi: l'astronave impazzisce e manda in
tilt tutte le altre navi. Gli eroi possono tornare a casa. Presenti
nei film e nei racconti di fantascienza come armi terribili e
spietate, con la diffusione dell'informatica in ogni aspetto della
società moderna i virus sono entrati nella vita di tutti
i giorni. Purtroppo su questo fenomeno, forse anche per colpa
della leggerezza con cui l'argomento viene trattato dal cinema
e dalla stampa, soprattutto quella non specializzata, ci sono
molte idee confuse. Il termine virus spaventa infatti sia coloro
che si sono avvicinati da poco al mondo dell'informatica sia gli
utenti più esperti. Ma che cos'è un virus informatico,
come agisce, quali sono le sue caratteristiche? Cerchiamo di spiegarlo
in questo articolo. Dai prossimi numeri avrà inizio una
rubrica che permetterà a tutti di seguirne i diversi aspetti
approfondendo soprattutto le moderne tecniche di difesa.
Che cosa sono i virus informatici
Un virus è un programma che, contrariamente al software
"normale", contiene una parte di codice che gli consente
di replicarsi: in altre parole, può autonomamente realizzare
copie di se stesso. Una volta effettuata la replica del suo codice,
un virus usa diversi mezzi (settori di avvio dei dischi fissi
e dei floppy disk, file eseguibili e le macro dei documenti realizzati
con elaboratori testi e fogli elettronici) per diffondere la sua
infezione. Un virus attacca il suo codice "infetto"
al codice "sano" di un file. A questo punto, quando
si copia il file su un dischetto o lo si invia come allegato di
un messaggio di posta elettronica, l'infezione inizia a propagarsi.
In realtà parlare semplicemente di virus è improprio:
ne esistono molti tipi, con comportamenti e "funzionalità"
differenti.
Virus dei settori di avvio
e di partizione
Quando si accende il computer, durante la procedura di avvio del
sistema operativo, il pc legge automaticamente alcune parti del
disco (il settore delle partizioni, chiamato anche mbr - Master
Boot Record - e il settore di avvio) che contengono il codice
necessario per caricare i file di sistema. La procedura di avvio
è identica sia che il boot avvenga da un dischetto sia
da un disco rigido, con l'unica differenza che nel dischetto,
che può avere una sola partizione, non è presente
il Master Boot Record. Nella prima parte della figura in basso
viene mostrato come vengono eseguiti i programmi memorizzati nella
tavola delle partizioni e nei settori di boot dei dischi all'accensione
del sistema in un computer non infetto. La seconda parte mostra
come un virus possa agire inserendo il suo codice nella procedura
di boot. Per prima cosa sposta la tavola delle partizioni in un
settore qualsiasi del disco, dopo di che copia se stesso nello
spazio lasciato libero. In questo modo, il programma di avvio
esegue automaticamente il codice del virus a ogni boot del sistema
permettendogli di attivarsi. Una volta in azione, il virus si
collega al settore del disco dove ha spostato la tavola delle
partizioni e il processo di avvio prosegue normalmente. La maggioranza
dei virus di questo tipo sceglie arbitrariamente i cluster dove
spostare la tavola delle partizioni e i settori di boot originali,
marcandoli come non utilizzabili, o bad, nella fat (File Allocation
Table), in modo che non possano essere sovrascritti. Il metodo
più comune per prendere un virus di questo tipo consiste
nell'avviare il computer da un dischetto infetto. Molti computer,
al momento di accensione, cercano il sistema operativo prima nel
drive a e poi nel disco c. Si tratta di un'impostazione, generalmente
modificabile dal bios del sistema, per permettere di caricare
il sistema operativo dal dischetto. Bisogna ricordare però
che il settore di avvio è presente su tutti i dischi floppy,
anche quelli che contengono solo dati. Su questi ultimi, infatti,
sono presenti le istruzioni che permettono di visualizzare il
messaggio che avverte che il sistema non può essere caricato
da quel disco. Se il settore di avvio di un dischetto è
infetto, al momento del boot della macchina viene eseguito il
virus che così può infettare il disco fisso. Quando
compare il messaggio "Disco non di sistema …" se
il dischetto contiene un virus del settore di boot, il virus è
già entrato in azione infettando il computer. Questo tipo
di agenti virali può infettare qualsiasi computer a prescindere
dal sistema operativo, in quanto il virus, scritto in linguaggio
macchina, entra in azione prima che venga caricato il sistema
operativo. I computer Macintosh hanno risolto questo problema
grazie a una procedura automatica di espulsione dei dischetti
al momento dell'avvio, riducendo notevolmente il rischio di infezione.
Senza ricorrere a queste soluzioni sofisticate, la difesa contro
questo tipo di virus è abbastanza semplice: basta non lasciare
mai un dischetto nel drive a e se, nonostante tutto, ne viene
dimenticato uno al momento dell'avvio bisogna spegnere il computer
dall'interruttore principale, riavviandolo dopo aver tolto il
dischetto dal drive a. Inoltre, molte macchine permettono di impostare
il bios del sistema in modo da far partire la procedura di avvio
dal drive c anche se è presente un dischetto nel drive
a, rendendo impossibile il boot da dischetto. Sfortunatamente
le cose più semplici molte volte sono le più difficili
da applicare nella pratica corrente e così i virus di boot
sono molto frequenti. Windows 95, fortunatamente, presenta alcuni
accorgimenti che possono rendere la vita più difficile
a questo tipo di virus. Infatti il sistema operativo a ogni avvio
controlla i settori di avvio e delle partizioni del sistema di
cui fa una copia nel file suhdlog.dat e se rileva cambiamenti
nella sua struttura emette messaggi di avviso che ne notificano
il cambiamento.
I virus di file
Questo tipo di infezione colpisce direttamente i file dei programmi,
cioè quelli con estensione .exe o .com e, in generale,
tutti quelli contenenti istruzioni eseguibili dal microprocessore.
A sinistra è illustrato il modo di lavorare di questo tipo
di infezioni. Nella parte alta si può vedere la tipica
struttura di un programma non infetto. In un programma infetto,
prima del codice vero del programma viene eseguito il codice del
virus. In questo modo il virus può entrare in azione. Compreso
il procedimento con cui venivano scritti questi tipo di virus,
per i progettisti di programmi antivirus è stato abbastanza
semplice correre ai ripari, realizzando i motori di scansione
o scanner con i quali viene rilevata l'infezione. La prima cosa
che fa uno scanner è controllare se all'interno del file
esiste la sequenza di istruzioni (stringa) caratteristica di ciascuna
infezione. La ricerca dei virus avviene attraverso il confronto
con un insieme di stringhe di identificazione, ricavate nei laboratori
di ricerca specializzati analizzando la struttura dei virus di
cui sono entrate in possesso. È questo il motivo per cui
se si incontra un virus sconosciuto i produttori di software -
e di antivirus in particolare - richiedono di inviarle il file
infetto. In questo modo si possono analizzare le caratteristiche
e preparare l'aggiornamento delle stringhe di riconoscimento dell'antivirus.
Quando si installa l'aggiornamento di un prodotto non si fa altro
che caricare un nuovo insieme di stringhe di riconoscimento con
cui il programma di scansione può individuare i nuovi virus.
Come tutti i programmi dos dal 1981 in poi, anche i programmi
infetti da un virus di file possono essere eseguiti senza alcun
problema in Windows 95.
Virus di macro
Le moderne suite di programmi di produttività individuale
(Corel Office, Microsoft Office, Lotus Smartsuite) possiedono
comodi linguaggi di macro-programmazione con i quali è
possibile automatizzare procedure noiose e ripetitive. Questo
ha portato notevoli vantaggi agli utilizzatori, ma ha introdotto
una nuova minaccia, prima ritenuta impossibile, costituita da
veri e propri virus informatici che si propagano attraverso i
documenti. Queste infezioni sono state studiate a livello teorico
già dal 1989 ma hanno iniziato a diffondersi molti più
tardi. Bisogna aspettare infatti il dicembre del 1994 per il primo
virus delle macro di Microsoft Word di cui si sia a conoscenza,
word.dmv, anche se il primo a raggiungere una notevole diffusione,
word.concept, comparve solo nel giugno 1995, ottenendo rapida
propagazione per mezzo di alcuni cd prodotti dalla Microsoft che
contenevano documenti infetti da questo virus. L'impatto fu notevole:
all'epoca numerosi utenti scambiavano correntemente documenti
tramite dischetti o posta elettronica senza nessuna precauzione.
Nel giro di pochi mesi word.concept divenne il virus più
diffuso nel mondo, superando form e antiexe, da anni in vetta
alle classifiche dei virus più diffusi.
Tecnicamente un virus di macro è costituito da una macro
o da un file di modello (template) che ha la possibilità
di replicare il suo codice ed, eventualmente, arrecare danni al
sistema. Un'infezione avviene quando una macro infetta ordina
al sistema di sovrascrivere o di alterare comandi di sistema esistenti,
aggiungendo o alterando quelli contenuti nell'elenco globale delle
macro. Quando Word apre un documento, la prima cosa che fa è
vedere se contiene delle macro, eseguendole. Nel caso di documenti
infetti, queste macro ne infettano altre, replicandosi. Nei casi
più comuni viene sostituita la macro filesaveas, in modo
da controllare come vengono salvati i documenti futuri. Questo
significa che il virus può stabilire il formato con cui
verranno salvati i documenti e quali macro includere nel documento.
Alla fine della sessione, Word salva automaticamente tutte le
macro globali nel file normal.dot, rendendole disponibili per
tutte le sessioni future, fino a che non si sostituisce il file
normal.dot infetto con quello originale. Poiché sono legati
all'applicazione e non al sistema operativo, sono multipiattaforma,
in quanto possono infettare tutti i sistemi su cui può
girare l'applicazione. Sono legate inoltre alla versione nazionale
dell'applicazione: i linguaggi macro vengono tradotti nella lingua
del paese in cui viene commercializzata l'applicazione, rendendo
impossibile la diffusione dell'infezione oltre i confini nazionali.
Questi virus vengono identificati dai programmi antivirus utilizzando
le stringhe di riconoscimento e vengono eliminati cancellando
dal documento le macro infette. L'ultima versione di Word, contenuta
in Office97, avvisa ogni volta che viene caricata una macro sospetta,
lasciando all'utente la scelta di aprirla o meno.
Azioni e caratteristiche dei virus
Indipendentemente dalla loro natura (infezioni dei file, dei settori
di avvio o di macro) i virus esercitano azioni diverse e mostrano
comportamenti particolari che possono essere riassunti in quattro
categorie.
Residenza in memoria
I virus residenti in memoria, detti anche tsr (Terminate and Stay
Resident), caricano in memoria il loro codice ogni volta che il
programma infetto, sia esso un file eseguibile o il codice presente
nei settori di avvio del sistema, viene eseguito. Una volta attivo,
il virus può assumere il controllo delle principali funzioni
del computer, rendendo molto difficile la rilevazione da parte
dei programmi antivirus. Queste tecniche funzionano solo in ambiente
ms-dos, in quanto sfruttano la particolare gestione della memoria
caratteristica di questo sistema operativo. In ambiente nativo
Windows 95 non sono stati ancora rilevati virus residenti in memoria,
ma se si apre una sessione dos, i virus possono ancora usare queste
tecniche di infezione.
Mimetizzazione
Alcuni virus residenti in memoria utilizzano tecniche di mimetizzazione
(stealth) per nascondere le modifiche apportate al sistema, tenendo
sotto controllo le funzioni utilizzate per leggere i file o i
blocchi fisici dei dischi. In questo modo i programmi e l'utente
vengono ingannati dall'apparente normalità della situazione.
Esempi possono essere virus i cui file infetti non appaiono modificati
in lunghezza o virus di boot che restituiscono le tabelle originali
nascondendo così l'infezione. È una tecnica molto
comune: Brain, il primo virus per pc individuato nel 1986, utilizzava
già tecniche stealth per celare la sua presenza.
Cifratura del codice
I virus di file sono semplici da individuare, una volta nota la
stringa di identificazione. Per renderne più difficile
l'identificazione, gli autori di codici virali hanno pensato di
nascondere il codice del virus utilizzando tecniche di crittografia.
Un virus con codice cifrato è costituito da una routine
di decrittazione e da un corpo virale criptato. Se viene lanciato
un programma infetto, la routine di decrittazione prende il controllo
e decodifica il corpo del virus. A questo punto, la routine trasferisce
il controllo al virus in chiaro che può eseguire la sua
azione infettante come qualunque altro virus. Ogni volta che infetta
un nuovo programma, copia il suo corpo ancora in chiaro e la routine
di decrittazione, cifrando il suo codice a operazioni concluse.
Per cifrare la copia del suo codice, viene utilizzata una chiave
che viene cambiata ogni volta rendendo diverso il virus cifrato.
La routine di decrittazione resta però sempre la stessa,
rendendo semplice il lavoro dei programmi antivirus che, invece
di eseguire la scansione solo alla ricerca delle stringhe di definizione
dei virus esaminano il disco alla ricerca delle sequenze delle
routine di decrittazione.
Polimorfismo
I virus polimorfici sono un'evoluzione dei virus con codice cifrato.
Come questi ultimi sono costituiti da una routine di decrittazione
e da un corpo virale criptato che viene decodificato solo quando
il virus è in esecuzione ma a queste due componenti aggiungono
un algoritmo che modifica in modo casuale la routine di decrittazione
dopo ogni infezione.
In un virus polimorfo vengono criptati sia il corpo del virus
sia il generatore casuale degli algoritmi di codifica, chiamato
mutation engine. Quando viene eseguito un programma infetto con
un virus polimorfo, la routine di decrittazione, che è
sempre in chiaro, decodifica le parti criptate, lasciando il virus
libero di infettare. Durante l'infezione, il virus copia sia il
suo codice sia il mutation engine, il quale genera casualmente
una nuova routine in grado di cifrare il virus.
Ogni nuova routine non ha nessuna somiglianza con le routine precedenti,
e quindi non può più venire identificata utilizzando
le normali tecniche di scansione. Con questa tecnica viene codificato
il corpo del virus e da infezione ad infezione cambia la routine
di decrittazione, confondendo gli scanner.
OCCHIO
ALL'AVVIO
La procedura di boot non utilizza la struttura delle directory
per avviare i programmi di inizializzazione della macchina, ma
utilizza puntatori a locazioni fisse. Il bios, infatti punta sempre
e solo al primo settore fisico del disco da cui si sta facendo
partire il sistema che, nel caso di un floppy è quello
di avvio (boot sector), mentre nel caso di un disco fisso, è
quello che contiene la mbr, che a sua volta punta al settore di
avvio (primo settore della partizione primaria). Quest'ultimo
si collega invariabilmente al file io.sys, che si trova sempre
sul cluster numero due.
ATTENZIONE AI FALSI ALLARMI
Il lancio di Microsoft Windows 95 è stato senza dubbio
l'evento informatico più seguito dai mass-media. Il secondo
è stato un virus. Nel 1992 Michelangelo, una variante del
celebre Stoned, che si attiva il giorno del compleanno di Michelangelo
Buonarroti, nato il 6 marzo 1475, copiando parte del contenuto
della memoria su settori casuali del disco fisso diede origine
a un caso di dimensioni mondiali. Secondo alcuni sedicenti esperti,
tra cui importanti operatori commerciali del settore, il virus
avrebbe dovuto colpire cinque milioni di computer in tutto il
mondo. I giornali scrissero storie terribili, i più fantasiosi
arrivarono a profetizzare la fine della civiltà industriale.
Sono passati sei anni e stiamo tutti bene. La storia si è
ripetuta due anni fa con Hare, un virus polimorfo multipartito,
che si attiva il 22 dei mesi di agosto e settembre, annunciato
come l'ennesimo flagello e rivelatosi, poi, un fiasco. Questi
casi hanno creato una percezione falsa e sensazionalistica del
problema che invece richiede un approccio più razionale.
LE MACRO
Una macro è una collezione di istruzioni utilizzata per
automatizzare operazioni in genere ripetitive e noiose. Nel mondo
dos un esempio di macro è dato dai file batch (estensione
.bat), come l'autoexec.bat che automatizza il caricamento di programmi
all'avvio del sistema. Molte applicazioni, come Word o Excel,
utilizzano comandi macro per automatizzare particolari compiti
che richiedono l'esecuzione di sequenze di comandi elementari.
Si immagini, per esempio, di dover inserire il proprio nome, indirizzo
e numero di telefono a decine di documenti ogni giorno. Utilizzando
il linguaggio macro dell'applicazione è possibile associare
questo insieme di operazioni a una combinazione di tasti come
ctrl+maiusc+d. La potenza di un ambiente come Wordbasic di Word
fornisce all'utente la possibilità di automatizzare molte
azioni, comprese quelle relative alla gestione dei file, dall'interno
del programma stesso.
LA BIOLOGIA
INFORMATICA
Il nome virus, assegnato a questo tipo di programmi da Len Adleman,
un ricercatore dell'Università Lehigh in Pennsylvania,
è stato attribuito in quanto il loro comportamento è
simile a quello di un virus biologico che si diffonde per mezzo
delle cellule sane di un organismo. Esistono diversi tipi di virus,
ognuno dei quali presenta caratteristiche diverse e utilizza tecniche
differenti per diffondersi e per sfuggire all'azione dei software
di rilevazione antivirus.
NON TUTTI
SONO CATTIVI
I virus informatici colpiscono il sistema in modi diversi, causando
danni di diversa gravità. Non tutti i virus sono distruttivi
però. Molti non causano danni al sistema, sia perché
l'intenzione non era danneggiare, sia perché sono presenti
bachi che ne pregiudicano il funzionamento.
VIRUS E FILM
Il film Independence Day non è l'unico esempio in cui vengono
impiegati virus informatici per piegare i nemici. Anche la letteratura
di fantascienza li cita spesso. Nel romanzo Snow Crash, Neal Stephenson
racconta le avventure di un gruppo di ragazzi che combattono contro
la dittatura che detiene il potere di The Metaverse, un mondo
virtuale in cui i protagonisti del racconto si muovono sotto forma
di avatar, cioè rappresentazioni digitali di persone reali.
Anche qui, anche se questa volta dai cattivi, viene usato uno
speciale virus, Snow Crash.
|